package structure.proxy.impl;

import structure.proxy.Service;

/**
 * 有需求需要对原有方法进行改进，但是不能修改原方法， 1. 代理类与原方法类继承同一接口 2. 代理类中创建并持有原方法 3.
 * 在调用代理类方法时对原方法输出内容进行改进
 * 
 * 与包装器（适配器模式）的区别是：在使用代理类时使用者无需知道原方法是什么； 包装器中必须将原类对象传入到包装器中后进行包装加工
 * 两者相同点是：都是继承了同一个接口
 * 
 * @author thinkpad
 *
 */
public class Shop implements Service {

	private Factory factory;

	public Shop() {
		super();
		this.factory = new Factory();
	}

	@Override
	public void sell(String goods) {
		System.out.println("我是代理商，我找到一家生产" + goods + "的生产商帮我生产" + goods);
		factory.sell(goods);
		System.out.println("我是代理商，我把生产商帮我生产的" + goods + "卖给客户");
	}

}
